if(redis.call('GET',KEYS[1]) == ARGV[1]) then
    return redis.call('DEL',KEYS[1])
end
return 0











-- local key = KEYS[1];--锁的key
-- local threadId=ARGV[1];--线程唯一标识
-- local releaseTime=ARGV[2];--锁的自动释放时间
-- --判断是否存在
-- if(redis.call('exists', key)== 0) then
--     -- 不存在,获取锁
--     redis.call('hset',key,threadId,'1');
--     -- 设置有效期
--     redis.call('expire', key, releaseTime);
--     return 1;--返回结果
-- end;
-- 锁已经存在,判断threadId是否是自己
-- if(redis.call('hexists', key, threadId) == 1) then
--     --不存在,获取锁,重入次数+1
--     redis.call('hincrby', key, threadId, '1');
--     --设置有效期
--     redis.call('expire', key, releaseTime);
--     return 1;--返回结果
-- end;

-- --代码走到这里,说明获取锁的不是自己,获取锁失败
-- return 0;
--
--
--
--
--
-- local key = KEYS[1];-- 锁的key
-- local threadId=ARGV[1];--线程唯一标识
-- local releaseTime=ARGV[2];--锁的自动释放时间
-- --判断当前锁是否还是被自己持有
-- if(redis.call('HEXISTS', key, threadid) == 0)1
-- then
--     return nil;--如果已经不是自己,则直接返回
-- end;
-- --是自己的锁,则重入次数-1
-- local count = redis.call('HINCRBY', key, threadid,-1);
-- --判断是否重入次数是否已经为0
-- if (count > 0) then
--     --大于0说明不能释放锁,重置有效期然后返回
--     redis.call('EXPIRE', key, releaseTime);
--     return nil;
-- else
--     --等于0说明可以释放锁,直接删除
--     redis.call('DEL', key);
--     return nil;
-- end;